myApp.controller("buttonCtrl", function ($rootScope, $scope, $uibModal) {

    var modalInstance;

    $scope.openModal = function () {
        var formBoxData={
            title: $scope.modal_title,
            content: $scope.modal_content,
            modalApi: $scope.modal_api,
            confirmFunc: $scope.confirmFunc,
            useStatusFlag: $scope.useStatusFlag
        };
        modalInstance = $uibModal.open({
            templateUrl: $scope.modal_url,
            controller: $scope.modal_ctrl,
            size: $scope.modal_size,
            windowTopClass: $scope.modal_class,
            resolve: {
                formBoxData: function () {
                    return formBoxData;
                }
            }
        });
        modalInstance.result.then(function (formData) {


        }, function () {

        });
    }
});

myApp.directive('buttonModule', function () {
    var obj = {
        //指令在DOM中以什么形式声明; "E"=元素,"A"=属性,"C"=class,"M"=注释 默认为"A"
        restrict : "EA",
        //执行的优先级
        priority : 0 ,
        //true=优先级低于此指令的不生效 false=均生效
        terminal: false,
        //代表所链接HTML文件的字符串地址,也可以是跟template一样的函数
        templateUrl : 'model/button/button.html',
        //true=显示原始标签,false=不显示原始标签
        replace : false,
        //false=继承父作用域,
        //true=表示继承父作用域，并创建自己的作用域（子作用域）,
        // {}=表示创建一个全新的隔离作用域,
        // 内部属性
        // "@" 绑定一个局部 scope 属性到当前 dom 节点的属性值 (单向绑定,向内影响)
        // "=" 通过 directive 的 attr 属性的值在局部 scope 的属性和父 scope 属性名之间建立双向绑定 (双向绑定,同时影响)
        // "&"  提供一种方式执行一个表达式在父 scope 的上下文中。如果没有指定 attr 名称，则属性名称为相同的本地名称                      (绑定事件,事件改变是可以是directive外的改变,内往外传)
        scope : {
            'default_icon': '@icon',
            'default_text': '@text',
            'modal_title': '@modalTitle',
            'modal_content': '@modalContent',
            'modal_size': '@modalSize',
            'modal_class': '@modalClass',
            'modal_url': '@modalUrl',
            'modal_ctrl': '@modalCtrl',
            'modal_api': '@modalApi',
            'operation_type': '@operationType',
            'confirmFunc':'&confirmFunc',
            'useStatusFlag':'@useStatusFlag'
        },
        //可以是字符串或者函数 (公共逻辑)
        //字符串可以指定控制器名称
        //函数为自己设定控制器逻辑
        controller : "buttonCtrl"
    };
    return obj;
});
